define(['jquery','./_ajaxRequest','./_base'],function($,ajaxRequest,wanyiBase){
	//variable   
	var wanyi={};
	wanyi.url={};
	wanyi.url.loginUrl="/account/login/";
	wanyi.url.captchaUrl="/account/need_captcha/";
	wanyi.url.captchaRefreshUrl="/captcha/refresh/";
	wanyi.url.signUrl="/account/signup/";
	wanyi.url.sendCodeUrl="/account/signup-send-code/";
	wanyi.url.findPwdUrl="/account/findpsw/";
	wanyi.url.findByTelUrl="/account/findpsw-cellphone/";
	wanyi.url.findPwdCodeUrl="/account/find-send-code/";
	wanyi.url.findSetPWD="/account/findpsw-set/";

	var validateTest=function(){
		var self=this;
		var mailFlag=false;
		self.tel="";
		self.pwd="";
		self.defaultPwd="";
		self.pwdMore="";
		self.mail="";
		self.valideCode="";
		self.flag={};
		self.telTest=function(el){
			self.flag.valiTelFlag=false;
			document.getElementById(el).addEventListener('input',function(){
				self.tel=$("#"+el).val().toString().trim('');			
				if(self.tel.match(/\D/)){	
					self.infoTip(1,'.errorInfoSmall','手机号输入错误！');		
				}
				else{
					self.infoTip(0,'.errorInfoSmall','');	
					if(self.tel.length==11){
						self.flag.valiTelFlag=true;
					}
					else{
						self.flag.valiTelFlag=false;
					}
				}
				if($(this).parents('.loginPage').length==1){	
					self.testAll(0);
				}
				else if($(this).parents('.findUseTel').length==1){
					self.testAll(1);
				}
				else if($(this).parents('.signUpPage').length==1){
					self.testAll(2);
				}	
				$("#"+el).val(self.tel.replace(/\s+/g,''));
			})
			$("#"+el).on('blur',function(event){
				self.tel=$("#"+el).val().toString().trim('');	
				if(self.tel.length!=11&&self.tel.length!=0){	
					self.infoTip(1,'.errorInfoSmall','手机号输入错误！');	
					self.flag.valiTelFlag=false;
				}
				else{
					self.flag.valiTelFlag=true;
				}
				if($(this).parents('.loginPage').length==1){	
					self.testAll(0);
				}
				else if($(this).parents('.findUseTel').length==1){
					self.testAll(1);
				}
				else if($(this).parents('.signUpPage').length==1){
					self.testAll(2);
				}		
			});
		}
		self.loginPwdTest=function(el){
			self.flag.valiPwdFlag=false;
			document.getElementById(el).addEventListener('input',function(){
				self.pwd=$("#"+el).val().trim();	
				self.infoTip(0,'.errorInfoSmall','');	
				if(self.pwd.length>=8&&self.pwd.length<=16){
					self.flag.valiPwdFlag=true;
				}
				else if(self.pwd.length>16){
					self.infoTip(1,'.errorInfoSmall','密码输入错误！');
				}
				else{				
					self.flag.valiPwdFlag=false;
				}
				self.testAll(0);
			})
			$("#"+el).on('blur',function(event){
				self.pwd=$("#"+el).val().trim();
				if(self.pwd.length!=0&&self.pwd.length<8||self.pwd.length>16){	
					self.infoTip(1,'.errorInfoSmall','密码输入错误！');
					self.flag.valiPwdFlag=false;	
				}
				else{
					self.flag.valiPwdFlag=true;
				}
				self.testAll(0);
			});
		}
		self.signPwdTest=function(el){
			self.flag.valiPwdFlag=false;
			var reg1=/^[a-z]{8,}$|^[A-Z]{8,}$|^[0-9]{8,}$/;
			var reg2=/^[a-z]+[A-Z]+[a-zA-Z]*$|^[A-Z]+[a-z]+[a-zA-Z]*$|^[a-zA-Z]+\d+[a-zA-Z0-9]*$|^\d+[a-zA-Z]+[a-zA-Z0-9]*$/;
			var reg3=/\W|_/;
			var $intensionBar=$('.intensionBar');
			document.getElementById(el).addEventListener('input',function(){
				self.defaultPwd=$("#"+el).val().trim();	
				$intensionBar.find(".intension").removeClass('intenCurrent');		
				if(self.defaultPwd.length>0&&self.defaultPwd.length<8){
					$intensionBar.find(".low").addClass('intenCurrent');
					self.flag.valiPwdFlag=false;
				}				
				else{
					if(self.defaultPwd.match(reg1)){
						$intensionBar.find(".low").addClass('intenCurrent');
					}
					if(self.defaultPwd.match(reg2)){
						$intensionBar.find(".center").addClass('intenCurrent');
					}
					if(self.defaultPwd.match(reg3)){
						$intensionBar.find(".high").addClass('intenCurrent');
					}
					if(self.defaultPwd.length<=16){
						self.infoTip(0,'.errorInfoSmall','');
						self.flag.valiPwdFlag=true;
					}
					else{
						self.infoTip(1,'.errorInfoSmall','密码输入错误！');
						self.flag.valiPwdFlag=false;
					}
				}	
				if($(this).parents('.signUpPage').length==1){
					self.testAll(2);
				}
				else if($(this).parents('.newPwdPage').length==1){
					self.testAll(4);
				}
			})
			$("#"+el).on('blur',function(event){
				self.defaultPwd=$("#"+el).val().trim();	
				if(self.defaultPwd.length!=0&&self.defaultPwd.length<8||self.defaultPwd.length>16){	
					self.infoTip(1,'.errorInfoSmall','密码输入错误！');
					self.flag.valiPwdFlag=false;	
				}
				else{
					self.flag.valiPwdFlag=true;
				}
				if($(this).parents('.signUpPage').length==1){
					self.testAll(2);
				}
				else if($(this).parents('.newPwdPage').length==1){
					self.testAll(4);
				}
			});
		}
		self.pwdAginTest=function(el,elCompare){
			self.flag.valiPwdMoreFlag=false;
			document.getElementById(el).addEventListener('input',function(){
				self.pwdMore=$("#"+el).val().toString().trim('');
				if(self.pwdMore.length!=0){
					self.infoTip(0,'.info4','');
					self.pwd=$("#"+elCompare).val().toString().trim('');
					if(self.pwdMore==self.pwd){
						self.flag.valiPwdMoreFlag=true;
					}
					else{
						self.flag.valiPwdMoreFlag=false;
					}			
				}
				if($(this).parents('.signUpPage').length==1){
					self.testAll(2);
				}
				else if($(this).parents('.newPwdPage').length==1){
					self.testAll(4);
				}
			});
			$("#"+el).on('blur',function(event){
				if($("#"+el).val().trim()!=""){
					self.pwdMore=$("#"+el).val().toString().trim('');
					if(self.pwdMore==self.pwd){
						self.flag.valiPwdMoreFlag=true;
						self.infoTip(0,'.info4','');
					}
					else{
						self.infoTip(1,'.info4','两次密码输入不一致！');
						self.flag.valiPwdMoreFlag=false;
					}
					if($(this).parents('.signUpPage').length==1){
						self.testAll(2);
					}
					else if($(this).parents('.newPwdPage').length==1){
						self.testAll(4);
					}	
				}
			});
		}
		self.mailTest=function(el){
			self.flag.valiMailFlag=false;
			var filter  = /^([\w\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			$("#"+el).on('input',function(){
				self.infoTip(0,'.errorInfoSmall','');
				self.mail=$("#"+el).val().trim();
				if(filter.test(mail)){ 
					$(".submit").removeClass('submitDefault');	
					self.flag.mailFlag=true;
				}
			})
			$("#"+el).on('blur',function(){
				self.mail=$("#"+el).val().trim();
				if(filter.test(mail)) {
					self.flag.mailFlag=true;
				}
				else {
					self.infoTip(1,'.errorInfoSmall','无效的邮箱地址！');	
					self.flag.mailFlag=false;
				}
			});
		}
		self.codeTest=function(el){
			self.flag.codeFlag=false;
			$("#"+el).on('input',function(){
				self.infoTip(0,'.info5','');
				self.valideCode=$("#"+el).val().trim();
				if(self.valideCode!=""){ 
					self.flag.codeFlag=true;
				}
				else{
					self.flag.codeFlag=false;
				}
				if($(this).parents('.findByTel').length==1){	
					self.testAll(3);
				}
				else{
					self.testAll(2);
				}
			})
			$("#"+el).on('blur',function(){
				self.valideCode=$("#"+el).val().trim();
				if(self.valideCode!=""){ 
					self.flag.codeFlag=true;
				}
				else{
					self.flag.codeFlag=false;
					self.infoTip(1,'.info5','请输入验证码！');
				}
				if($(this).parents('.findByTel').length==1){	
					self.testAll(3);
				}
				else{
					self.testAll(2);
				}
			});
		}
		self.testAll=function(state){
			switch (state){
				case 0:      //login
					if(self.flag.valiTelFlag&&self.flag.valiPwdFlag){
						$('.submit').removeClass('submitDefault');
					}
					else{
						$('.submit').addClass('submitDefault');
					}
					break;
				case 1:     //findPWD
					if(self.flag.valiTelFlag){
						$('.submit').removeClass('submitDefault');
					}
					else{
						$('.submit').addClass('submitDefault');
					}
					break;
				case 2:      //singUp
					if(self.flag.valiTelFlag&&self.flag.valiPwdFlag&&self.flag.valiPwdMoreFlag&&self.flag.codeFlag&&self.flag.agreenFlag){
						$('.submit').removeClass('submitDefault');
					}
					else{
						$('.submit').addClass('submitDefault');
					}
					break;
				case 3:     //findPWDByTel
					if(self.flag.codeFlag){
						$('.submit').removeClass('submitDefault');
					}
					else{
						$('.submit').addClass('submitDefault');
					}
					break;	
				case 4:      //findSetPWD
					if(self.flag.valiPwdFlag&&self.flag.valiPwdMoreFlag){
						$('.submit').removeClass('submitDefault');
					}
					else{
						$('.submit').addClass('submitDefault');
					}
					break;
			}

		}
		self.clickEvent=function(el){
			//code
		 	var date1,timeID;
		 	var second=60000;
		 	var secondShow=60;
		 	var onFlag=false;
		 	function clearLoop(){
		 		clearInterval(timeID);
		 	} 
		 	$('.send').on('click',function(){
		 		var t=this;
		 		if($(t).parents('.findByTel').length==1){
		 			self.tel = wanyiBase.getCookie("_wy_u"); 
		 			self.flag.valiTelFlag=true;
		 		}	
		 		if(self.tel==""){
		 			self.infoTip(1,'.info3','手机号不能为空！');
		 			return;
		 		}
		 		if(self.flag.valiTelFlag){
			 		var date2=new Date();
				 	onFlag&&(second=date2.getTime()-date1.getTime());
			 		if(second>=60000){
			 			if($(t).parents('.findByTel').length==1){
			 				var option={};
			 				option.url=wanyi.url.findPwdCodeUrl;
			 				option.datas={};
			 				ajaxRequest.postRequest(option,self.infoTip,sendBack);
			 			}
			 			else{
				 			var option={};
							option.url=wanyi.url.sendCodeUrl;
							option.datas={cellphone:self.tel};
		 					ajaxRequest.postRequest(option,self.infoTip,sendBack);
		 				}
			 		} 
		 		}
		 		else{
		 			self.infoTip(1,'.info3','手机号不正确！');
		 		}	
 			})
 			function sendBack(response){
 				var t=".send";
				if(response.code==0){
		 			date1=new Date();
		 			$(t)[0].innerHTML="再次发送(<i>60</i>s)";
		 			if($(t).parent().hasClass('validate'))
		 				self.infoTip(2,'.info5','验证码已经以短信的形式发送到你的手机');
		 			$(t).addClass('sendAgin');
		 			timeID=setInterval(function(){
			 			$(t).find('i')[0].innerHTML=secondShow--;
			 			if(secondShow==0){
			 				$(t)[0].innerHTML="发送验证码";
			 				self.infoTip(0,'.info5','');
			 				$(t).removeClass('sendAgin');
			 				secondShow=60;
			 				clearLoop();
			 			}
			 		},1000)
			 		onFlag=true;
			 	}
			 	else{
			 		var failInfo=response.message;
			        self.infoTip(1,'.info5',failInfo);
			 	}
		 	}
 			$(".agree").click(function(){
 				if($(this).hasClass('agreeOn')){
 					$(this).removeClass('agreeOn');
 					self.flag.agreenFlag=false;
 				}
		 		else{
		 			$(this).addClass('agreeOn');
		 			self.flag.agreenFlag=true;
		 		}
		 		self.testAll(2);
		 	})
 			$(".bindButton").on('click',function(){
 				if(mailFlag){
 					$('.bind1').addClass('hide');
 					$('.bind2').removeClass('hide');
 					$('.mailAddress')[0].innerHTML=self.mail;
 				}
 			})
 			$(".loginPage .login").on('click',function(){
 				if(self.flag.valiTelFlag&&self.flag.valiPwdFlag){
 					var option={};
					option.url=wanyi.url.loginUrl;
					option.datas={cellphone:self.tel,password:self.pwd,captcha_1:$('#code').val().trim(),captcha_0:$('#id_captcha_0').val().trim()};
 					ajaxRequest.postRequest(option,self.infoTip,loginBack);
 					function loginBack(response){
 						if(response.code==0){
 							wanyiBase.setCookie("_wy_u",self.tel,24);
 							window.history.go(-1);
 						}
 						else{
 							var failInfo=response.message[0].message;
			                self.infoTip(1,'.info2',failInfo);
			                ajaxRequest.getRequest(wanyi.url.captchaUrl,captchaBack);			                
 						}
 					}
 				}
 			})
 			$('.refreshValidateImg').click(function(){
 				 ajaxRequest.getValidateImg(wanyi.url.captchaRefreshUrl);
 			})
 			function captchaBack(response){
            	if(response.message){
            		ajaxRequest.getValidateImg(wanyi.url.captchaRefreshUrl);
            	}
            }
            $('.findUseTel .next').click(function(){
            	if(self.flag.valiTelFlag){
            		var option={};
            		option.url=wanyi.url.findPwdUrl;
            		option.datas={cellphone:self.tel};
            		ajaxRequest.postRequest(option,self.infoTip,findBack);
            	}
            })
            function findBack(response){
            	if(response.code==0){
            		var questionFlag=response.question_set?1:0;
            		var wyFindValue=response.cellphone+":"+response.email+":"+questionFlag;
            		wanyiBase.setCookie("_wy_find",wyFindValue,24);
            		window.location.href="./findPasswordIndex.html";
            	}
            	else{
            		var failInfo=response.message[0].message;
			        self.infoTip(1,'.info2',failInfo);
            	}
            }
            $('.findByTel .next').click(function(){
            	if(self.flag.codeFlag){
            		var option={};
            		option.url=wanyi.url.findByTelUrl;
            		option.datas={code:self.valideCode};
            		ajaxRequest.postRequest(option,self.infoTip,findByTelBack);
            	}
            })
            function findByTelBack(response){
            	if(response.code==0){
            		window.location.href='findSetPassword.html?token='+response.token;
            	}
            	else{
            		var failInfo=response.message[0].message;
			        self.infoTip(1,'.info5',failInfo);
            	}
            }
            $(".resetPage .complete").on('click',function(){
            	if(self.flag.valiPwdFlag&&self.flag.valiPwdMoreFlag){
 					var option={};
 					//getToken
					var address=location.search.toString();
					var tokenValue="";
				    if(address!=''){
				    	tokenValue=/^\?token=(.+)\s*$/.exec(address)[1];
				    }
				    tokenValue==""&&(window.location.href="findPassword.html");
					option.url=wanyi.url.findSetPWD+tokenValue+"/";
					option.datas={password1:self.defaultPwd,password2:self.pwdMore};
 					ajaxRequest.postRequest(option,self.infoTip,resetBack);
 					function resetBack(response){
 						if(response.code==0){
 							$('.updateSuccess').removeClass('hide');
 							wanyiBase.delCookie('_wy_u');
 							setTimeout(function(){
 								window.location.href="login.html";
 							},2000);
 						}
 						else{
 							var failInfo=response.message[0].message;
			                self.infoTip(1,'.info4',failInfo);		                
 						}
 					}
 				}
            })
            $(".signUpPage .complete").on('click',function(){
 				if(self.flag.valiTelFlag&&self.flag.valiPwdFlag&&self.flag.valiPwdMoreFlag&&self.flag.codeFlag&&self.flag.agreenFlag){
 					var option={};
					option.url=wanyi.url.signUrl;
					option.datas={cellphone:self.tel,password1:self.defaultPwd,password2:self.pwdMore,code:self.valideCode};
 					ajaxRequest.postRequest(option,self.infoTip,signBack);
 					function signBack(response){
 						if(response.code==0){
 							self.infoTip(2,'.info5','注册成功！');
 						}
 						else{
 							var failInfo=response.message[0].message;
			                self.infoTip(1,'.info5',failInfo);		                
 						}
 					}
 				}
 			})
		}
		self.infoTip=function(state,el,infos){	
			switch (state){
				case 0:
					$(el)[0].innerHTML="";
					break;
				case 1:
					$(el)[0].innerHTML="<i class='loginErrorIcon'></i><em>"+infos+"</em>";
					break;
				case 2:
					$(el)[0].innerHTML="<em>"+infos+"</em>";
					break;				
			}
		}
	}
	return validateTest;
})